7.1 基于距离测量的定位

基于距离测量是一种基本的定位方法,其原理也非常直观和符合直觉。一种最基本的基于距离测量的定位方法是三边定位。

三边定位的基本思想是:假设空间中存在三个用于定位的信标。对于待测的定位点,可以测量该定位点到三个信标的距离。从信标处考虑,所有到信标指定距离的点,组成了一个以信标为圆心、半径为制定距离的圆。那么,根据定位点到三个信标的距离,即可分别确定三个定位圆。而这三个定位圆的交点,即为对待定位点的定位结果。

图1. 三边定位示意图(理论)

如图所示,如果三个信标的坐标分别为(0, 0)、(2, 0)和(1, 1.732)。对于定位点,如果定位点到三个信标的距离均为1.155,则以三个信标为圆心分别做圆,三个圆交于一点。则该点即为对定位点的定位结果。

假设待求的定位点坐标为(x, y),n个信标中第i个信标的坐标为(x_i,y_i),定位点到第i个信标的距离为d_i,则根据图1,有如下方程成立:

求解上式,即可求得定位点的坐标(x, y)。

但是通常来说,信标的定位圆并不会刚好交于一点。实际的测量结果通常如图所示。因此,在计算时,我们需要对其进行近似求解。常见方法有加权法、最小二乘法、质心法等。如果我们使用最小二乘法进行计算,需要在前面理论的基础上进一步进行计算。在式1的基础上,我们将前n-1个方程减去第n个方程,得到线性化方程:$AX=b$。其中:

则,利用最小二乘法可以解得:

相关代码如下(./code/trilateration.m)

nodeNumber = 3;   %定位信标的数量
nodeList = [0, 0; 2, 0; 1, 1.732];   %三个定位信标的坐标
disList = [1.155, 1.155, 1.155];    %定位目标点到三个定位信标的距离

A = [];
B = [];
xn = nodeList(nodeNumber, 1);
yn = nodeList(nodeNumber, 2);
dn = disList(nodeNumber);
for i=1:nodeNumber-1
    xi = nodeList(i, 1);
    yi = nodeList(i, 2);
    di = disList(i);
    A = [A; 2 * (xi - xn), 2 * (yi - yn)];
    B = [B; xi * xi + yi *yi - xn * xn - yn * yn + dn * dn - di * di];
end    %#计算线性方程组的参数A和B

X = inv(A'*A)*A'*B   %#根据最小二乘法公式计算结果X

代码中,nodeList表示信标的位置坐标,nodeNumber表示信标的数量,disList表示定位点到各信标的距离。则分别求得A和B以后,根据式2即可求得定位点的坐标X。
(延伸阅读:https://github.com/megagao/IndoorPos)

Some三边定位方法。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。

文章标题:7.1 基于距离测量的定位

文章字数:785

本文作者:WiSys Lab

发布时间:2019-07-02, 15:41:32

最后更新:2019-07-15, 16:47:13

原始链接:http://yoursite.com/2019/07/02/7.1 基于距离测量的定位/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录